﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using CongregacaoOs.Data;
using CongregacaoOs.Business;

namespace CongregacaoOs.WebForm.Cadastros
{
    public partial class Regional : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

            if (Session["DadosGerais"] == null) Response.Redirect("~/Cadastros/Account/Login.aspx");

            if (Session["TipoUsuario"].ToString() == "Local") Response.Redirect("~/Cadastros/Home.aspx");

            Page.Form.DefaultButton = btnBuscar.UniqueID;

            if (!IsPostBack)
            {
                AtualizarGridView();
                AtualizarDropDowListPais();
                AtualizarDropPaisFiltro();
            }
        }

        public void AtualizarGridView(string aNome = "")
        {
            ccRegionalBus bus = new ccRegionalBus();
            ccRegional ent = new ccRegional();

            ent.nome = aNome;
            ent.idPais = dropPaisFiltro.SelectedValue != "" ? Convert.ToInt32(dropPaisFiltro.SelectedValue) : 0;
            ent.idEstado = dropEstadoFiltro.SelectedValue != "" ? Convert.ToInt32(dropEstadoFiltro.SelectedValue) : 0;
            
            gvRegional.DataSource = bus.RegionalSelect(ent);
            gvRegional.DataBind();
        }


        public void AtualizarDropDowListPais(int aID=0)
        {
            ccPaisBus bus = new ccPaisBus();
            ccPais ent = new ccPais();
            ent.idPais = aID;
            dropPais.DataSource = bus.PaisSelect(ent);
            dropPais.DataBind();

            if (dropPais.Items[0].Selected) { dropEstado.Items.Clear(); }
        }


        public void AtualizarDropDowListEstado()
        {
            ccEstadoBus busEstado = new ccEstadoBus();
            ccEstado entEstado = new ccEstado();

            if (dropPais.SelectedValue != "")
            {
                entEstado.idPais = Convert.ToInt32(dropPais.SelectedValue);
                entEstado.nome = "";
                entEstado.sigla = "";
                dropEstado.DataSource = busEstado.EstadoSelect(entEstado);
                dropEstado.DataBind();
            }
            else
                dropEstado.Items.Clear();
        }

        public void AtualizarDropPaisFiltro(int aID = 0)
        {
            using (ccPaisBus bus = new ccPaisBus())
            {
                ccPais ent = new ccPais();
                ent.idPais = aID;
                dropPaisFiltro.DataSource = bus.PaisSelect(ent);
                dropPaisFiltro.DataBind();

                if (dropPais.Items[0].Selected) { dropEstado.Items.Clear(); }
            }
            

        }


        public void AtualizarDropEstadoFiltro()
        {
            using (ccEstadoBus bus = new ccEstadoBus())
            {
                ccEstado entEstado = new ccEstado();

                if (dropPaisFiltro.SelectedValue != "")
                {
                    entEstado.idPais = Convert.ToInt32(dropPaisFiltro.SelectedValue);
                    entEstado.nome = "";
                    entEstado.sigla = "";
                    dropEstadoFiltro.DataSource = bus.EstadoSelect(entEstado);
                    dropEstadoFiltro.DataBind();
                }
                else
                    dropEstadoFiltro.Items.Clear();
            }           
        }


        protected void gvRegional_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            AtualizarGridView();
            gvRegional.PageIndex = e.NewPageIndex;
            gvRegional.DataBind();
        }

        protected void gvRegional_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            if (e.CommandName == "EDITAR" || e.CommandName == "EXCLUIR")
            {
                GridViewRow row = (GridViewRow)(((ImageButton)e.CommandSource).NamingContainer);

                int index = row.RowIndex;

                hdID.Value = gvRegional.Rows[index].Cells[1].Text.Trim();
                HiddenField hdIdPais = (gvRegional.Rows[index].FindControl("hdIdPais") as HiddenField);
                HiddenField hdIdEstado = (gvRegional.Rows[index].FindControl("hdIdEstado") as HiddenField);

                if (e.CommandName == "EDITAR")
                {
                    hfIndexAccordion.Value = "1";
                    AtualizarDropDowListPais(Convert.ToInt32(hdIdPais.Value));
                    

                    txtNome.Text = gvRegional.Rows[index].Cells[2].Text.Trim();
                    dropPais.SelectedValue = hdIdPais.Value;
                    AtualizarDropDowListEstado();
                    dropEstado.SelectedValue = hdIdEstado.Value;

                }
                else if (e.CommandName == "EXCLUIR")
                {
                    ccRegionalBus bus = new ccRegionalBus();
                    bus.RegionalDelete(Convert.ToInt32(hdID.Value));
                }
            }

            AtualizarGridView();
        }

        protected void dropPais_SelectedIndexChanged(object sender, EventArgs e)
        {
            AtualizarDropDowListEstado();
        }

        protected void gvRegional_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                ImageButton imgEditar = (e.Row.FindControl("imgEditar") as ImageButton);
                imgEditar.CommandArgument = e.Row.RowIndex.ToString();

                ImageButton imgDelete = (e.Row.FindControl("imgDelete") as ImageButton);
                imgDelete.CommandArgument = e.Row.RowIndex.ToString();

                imgDelete.Attributes.Add("onclick", "javascript:return " +
                        "confirm('Confirmar exclusão do registro: " +
                        DataBinder.Eval(e.Row.DataItem, "regional") + "?')");
            }
        }

        protected void btnSalvar_Click(object sender, EventArgs e)
        {
            try
            {
                ccRegionalBus bus = new ccRegionalBus();
                ccRegional ent = new ccRegional();

                ent.nome = txtNome.Text.Trim();
                ent.idPais = Convert.ToInt32(dropPais.SelectedValue);
                ent.idEstado = Convert.ToInt32(dropEstado.SelectedValue);

                if (hdID.Value != "")
                    ent.idRegional = Convert.ToInt32(hdID.Value);

                bus.RegionalSaveOrUpdate(ent);
                hfIndexAccordion.Value = "0";
                AtualizarGridView();
                Functions.LimparCampos(this);

                MessageWindow.MessageType = true;
                MessageWindow.Texto = "Registro salvo com sucesso!!!";
                MessageWindow.ShowWindow();
            }
            catch (Exception)
            {

                MessageWindow.MessageType = false;
                MessageWindow.Texto = "Houve um erro ao salvar o registro. Tente novamente ou contate o suporte";
                MessageWindow.ShowWindow();
            }

        }

        protected void btnVoltar_Click(object sender, EventArgs e)
        {
            hfIndexAccordion.Value = "0";
            hdID.Value = "";
            Functions.LimparCampos(this);
            dropEstado.Items.Clear();
        }

        protected void btnBuscar_Click(object sender, EventArgs e)
        {
            if (txtBuscarNome.Text != "")
                AtualizarGridView(txtBuscarNome.Text.Trim());
            else
            {
                txtBuscarNome.Text = "Digite o nome da Regional...";
                AtualizarGridView();
            }
        }

        protected void btnAdicionarNovo_Click(object sender, EventArgs e)
        {
            hfIndexAccordion.Value = "1";
            AtualizarDropDowListPais();
            AtualizarDropDowListEstado();
            hdID.Value = "";
            Functions.LimparCampos(this);
        }


        protected void dropEstado_DataBound(object sender, EventArgs e)
        {
            dropEstado.Items.Insert(0, new ListItem("Escolha a Estado", String.Empty));
        }

        protected void dropPais_DataBound(object sender, EventArgs e)
        {
            dropPais.Items.Insert(0, new ListItem("Escolha a País", String.Empty));
        }

        protected void dropPaisFiltro_SelectedIndexChanged(object sender, EventArgs e)
        {
            AtualizarDropEstadoFiltro();
            AtualizarGridView();
        }

        protected void dropEstadoFiltro_SelectedIndexChanged(object sender, EventArgs e)
        {
            AtualizarGridView();
        }

        protected void dropPaisFiltro_DataBound(object sender, EventArgs e)
        {
            dropPaisFiltro.Items.Insert(0, new ListItem("Escolha a País", String.Empty));
        }

        protected void dropEstadoFiltro_DataBound(object sender, EventArgs e)
        {
            dropEstadoFiltro.Items.Insert(0, new ListItem("Escolha a Estado", String.Empty));
        }

    }
}